Skip to content

fix(atlas): repoint three catalog entries, and correct what they claim - #54

Merged
BitHighlander merged 1 commit into
masterfrom
fix/atlas-storage-gate-names
Aug 22, 2026
Merged

fix(atlas): repoint three catalog entries, and correct what they claim#54
BitHighlander merged 1 commit into
masterfrom
fix/atlas-storage-gate-names

Conversation

@BitHighlander

Copy link
Copy Markdown
Owner

The report catalog names the test that evidences each requirement, so renaming a test orphans its section. Three were left dangling by the storage-gate rework, and CI caught it:

SECTIONS validation FAILED: 3 test(s) not green for fw 7.15.0:
  U5  test_storage_version_gate::test_active_flash_format_is_v20        -> missing
  U5b test_storage_version_gate::test_burned_versions_have_no_reader    -> missing
  U8  test_storage_version_gate::test_every_ladder_version_has_a_reader -> missing

Not a mechanical rename

All three encoded the same false premise: that an unhandled storage version "falls out of the switch" to a default.

storage_fromFlash() has no default case, deliberately, so that -Werror=switch names any version nobody handled. An unlisted version doesn't fall anywhere — it fails the ARM build, which is exactly what happened on the passkeys branch.

now points at why
U5 test_last_shipped_never_moves_backwards U5's stated role — "an independent witness for the number the whole gate turns on", because the static assert compares two constants in one header that a single commit can raise together — is now the LAST_SHIPPED ratchet. Its old title asserted V20: true on 7.16, false on 7.15. The ratchet is true on both.
U5b test_burned_versions_are_dispatched_to_the_wipe_path The label must exist; what must not exist is a reader behind it.
U8 test_every_shipped_version_has_a_reader Scoped to SHIPPED on purpose — a burned format legitimately has none, so "every ladder version has a reader" would make burning one impossible to express. test_no_shipped_version_is_burned is what stops that scoping becoming a loophole.

Verification

Checked that every catalog reference resolves to a test that exists — 280 entries, all green — not just the three touched here. The check enumerates (section, module, test) from the catalog and greps each module for def <test>(.

Underlying test run on the branch that surfaced this: 638 passed, 30 skipped, 0 failed. The only thing red was the catalog.

The report catalog names the test that evidences each requirement, so
renaming a test orphans its section. Three were left dangling:

  U5  test_active_flash_format_is_v20        -> missing
  U5b test_burned_versions_have_no_reader    -> missing
  U8  test_every_ladder_version_has_a_reader -> missing

They are not a mechanical rename, because all three encoded the same
false premise: that an unhandled storage version "falls out of the switch"
to a default. storage_fromFlash() has NO default case, deliberately, so
that -Werror=switch names any version nobody handled. An unlisted version
does not fall anywhere -- it fails the ARM build, which is what actually
happened on the passkeys branch.

  U5  -> test_last_shipped_never_moves_backwards. The role U5 described --
         "an independent witness for the number the whole gate turns on",
         because the static assert compares two constants in one header
         that one commit can raise together -- is now the LAST_SHIPPED
         ratchet. Its old title asserted V20, which is true on 7.16 and
         false on 7.15; the ratchet is true on both.
  U5b -> test_burned_versions_are_dispatched_to_the_wipe_path. The label
         must EXIST; what must not exist is a reader behind it.
  U8  -> test_every_shipped_version_has_a_reader. Scoped to SHIPPED on
         purpose: a burned format legitimately has none, so "every ladder
         version has a reader" would make burning one impossible to
         express. test_no_shipped_version_is_burned is what stops that
         scoping becoming a loophole.

Verified every catalog reference resolves to a test that exists -- 280
entries, all green -- rather than only the three I touched.
@BitHighlander
BitHighlander merged commit 999e776 into master Aug 22, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant